// 给定两个字符串形式的非负整数num1和num2，计算它们的和
// 要求： num1和num2的长度都小于5100
// num1和num2都只包含数字0-9
// num1和num2都不包含任何前导0
// 不能使用内建的BigInteger库，也不能直接将输入的字符串转换为整数形式

// 思路，从个位数开始，由低位到高位，按位相加，如果相加的结果超过10，则向前进位

function addString(nums1, nums2) {
    let digit1 = nums1.length - 1
    let digit2 = nums2.length - 1
    let carry = 0 // 进位
    let res = ''
    while (digit1 >= 0 || digit2 >= 0 || carry) {
        let val1 = digit1 >= 0 ? Number(nums1[digit1]) : 0
        let val2 = digit2 >= 0 ? Number(nums2[digit2]) : 0
        digit1--
        digit2--
        let sum = val1 + val2 + carry
        carry = Math.floor(sum / 10)
        let num = sum % 10
        res = num + res
    }
    return res
}

let num1 = "11", num2 = "123"
console.log(addString(num1, num2));